Distributed Transactions এবং Two-Phase Commit Protocol (2PC) আধুনিক সিস্টেমে ডিস্ট্রিবিউটেড ডেটাবেসে একাধিক সিস্টেম বা সেবার মধ্যে ডেটা একসঙ্গে এবং সুরক্ষিতভাবে আপডেট করার জন্য ব্যবহৃত হয়। এই প্রযুক্তিগুলি মূলত একাধিক সার্ভার বা সিস্টেমে একটি একক ট্রানজেকশনের কার্যক্রম সঠিকভাবে সম্পন্ন হতে সাহায্য করে, যাতে প্রতিটি অংশ একযোগে সফল বা ব্যর্থ হয়।
এখানে, আমরা Distributed Transactions এবং Two-Phase Commit Protocol এর ধারণা, ভূমিকা, এবং বাস্তবায়ন পদ্ধতি সম্পর্কে বিস্তারিত আলোচনা করব।
Distributed Transactions হল একাধিক সিস্টেম বা সার্ভারের মধ্যে সংঘটিত ট্রানজেকশন যা একে অপরের উপর নির্ভরশীল থাকে। এই ধরনের ট্রানজেকশনে, ট্রানজেকশনটি একাধিক রিসোর্স (যেমন, ডাটাবেস, ফাইল সিস্টেম, বা মেসেজ কিউ) সমন্বিতভাবে পরিচালিত হয়, এবং এটি নিশ্চিত করতে হয় যে সব সিস্টেম একইভাবে সফলভাবে বা ব্যর্থভাবে সম্পন্ন হবে।
যখন একটি ট্রানজেকশন একাধিক ডাটাবেস বা সার্ভিসের উপর চলে, তখন সাধারণত Atomicity, Consistency, Isolation, এবং Durability (ACID) গুণাবলীর নিশ্চয়তা দেওয়া হয়। এই ধরনের ট্রানজেকশনে সাধারণত Two-Phase Commit (2PC) প্রটোকল ব্যবহার করা হয়।
Two-Phase Commit (2PC) একটি ডিসট্রিবিউটেড ট্রানজেকশন প্রটোকল যা সিস্টেমের মধ্যে ট্রানজেকশন সঠিকভাবে পরিচালনা করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে একটি ট্রানজেকশন একাধিক সিস্টেমে সফলভাবে সম্পন্ন হবে বা পুরোপুরি বাতিল হবে। 2PC প্রটোকল দুটি ধাপে কাজ করে:
এই ধাপে, কো-অর্ডিনেটর (যে সার্ভার বা সিস্টেম ট্রানজেকশনটি পরিচালনা করে) সমস্ত পার্টিসিপ্যান্ট (অর্থাৎ, ট্রানজেকশনে অংশগ্রহণকারী সিস্টেম বা সার্ভার) থেকে প্রস্তুতির জন্য সিগন্যাল পাঠায়। কো-অর্ডিনেটর সব পার্টিসিপ্যান্ট থেকে তাদের প্রস্তুতি বা অনাপত্তি জানার জন্য একটি ভোট সংগ্রহ করে।
যদি সমস্ত পার্টিসিপ্যান্ট "Yes" জানায়, তবে কো-অর্ডিনেটর তাদেরকে "commit" কমান্ড পাঠায়, যা তাদেরকে ট্রানজেকশন সম্পন্ন করতে নির্দেশ দেয়। অন্যথা, যদি কোনো পার্টিসিপ্যান্ট "No" জানায়, কো-অর্ডিনেটর তাদেরকে "rollback" কমান্ড পাঠায়, যাতে সমস্ত সিস্টেম তাদের পরিবর্তনগুলো ফিরিয়ে নেয়।
ধরা যাক, একটি ব্যাঙ্কের ট্রানজেকশন সিস্টেম আছে, যেখানে একজন গ্রাহক তার অ্যাকাউন্ট থেকে টাকা তুলে অন্য একটি অ্যাকাউন্টে পাঠাতে চায়। এই ট্রানজেকশন দুটি সিস্টেমের মধ্যে চলছে: একটি সিস্টেমে টাকা পরিশোধের জন্য এবং অন্যটিতে টাকা গ্রহণ করার জন্য।
Two-Phase Commit Protocol (2PC) একটি গুরুত্বপূর্ণ প্রটোকল যা ডিসট্রিবিউটেড ট্রানজেকশনের মধ্যে সমস্ত সিস্টেমের ডেটা একত্রিত করার জন্য ব্যবহৃত হয়। এটি নিশ্চিত করে যে একটি ট্রানজেকশন সফলভাবে সম্পন্ন হবে বা পুরোপুরি বাতিল হবে, এবং কোনো সিস্টেমের মধ্যে ডেটার অখণ্ডতা রক্ষা করবে। যদিও 2PC একটি সাধারণ এবং শক্তিশালী প্রটোকল, তবে এটি কিছু সীমাবদ্ধতা এবং পারফরম্যান্স সমস্যা তৈরি করতে পারে, যা পরবর্তীতে Three-Phase Commit (3PC) বা অন্যান্য বিকল্প প্রটোকল দ্বারা সমাধান করা হতে পারে।